package com.ccjq.jq173.product.service;

import com.ccjq.jq173.product.po.Category;
import com.ccjq.jq173.product.po.PageInfo;
import com.ccjq.jq173.product.po.Product;
import com.ccjq.jq173.product.po.Slider;

import java.util.List;

public interface ProductService {
    /**
     * 完成
     *1
     * @param categoryId  品牌ID
     * @param pageSize   每页显示数
     * @param pageNo   查询的页数
     * @return
     */
    PageInfo<Product> queryProducts(String categoryId, int pageSize, int pageNo);

    /**
     * 完成
     * 2
     * 根据商品Id获得商品详细信息
     * @param productId   商品id
     * @return  返回商品详细信息
     */
    Product queryProductsDetail(String productId);


    /**
     * 3
     *获取浏览器器推荐的商品
     *
     * @return  返回商品列表
     */
    List<Product> queryNominateProducts();

    /**
     * 完成
     * 4
     * 查询商品品牌列表
     * @return 返回品牌列表
     */
    List<Category> queryCategorys();

    /**
     * 完成
     * 5
     * 查询热卖单品
     *
     * @return  返回热卖单品列表
     */
    List<Product> queryHotSales();

    /**
     * 6
     * 完成
     * 上市新品
     *
     * @return   返回上市新品信息
     */
    List<Product> queryNewProducts();

    /**
     * 7
     * 查询滚动广告
     *完成
     * @return   返回广告商品列表
     */
    List<Slider> querySliders();


    /**
     * 完成
     * 8
     * 根据id获得品牌信息
     * @param categoryId  品牌ID
     * @return 返回品牌信息
     */
    Category getCategoryById(String categoryId);

    /**
     * 完成
     * 9
     * 根据商品ID查库存
     * @param productId  商品ID
     * @return   返回当前商品的库存数量
     */
    int getStockByProductId(String productId);

    /**
     * 完成
     * 10更新库存信息
     * @param productId 商品id
     * @param quantity 商品库存量
     * @return  返回商品库存
     */
    //  int updateStack(String productId,int quantity);

    /**
     * 查询该用户在购物车是否已经添加过此商品
     * @param productId  商品ID
     * @param userId  用户ID
     * @return  真有记录 假没有记录
     */
    //   boolean pdjl(String productId,String userId);

    /**
     * 小添加  向购物车第一次添加没有记录的商品
     * @param productId  商品ID
     * @param quantity  购物车中商品数量
     * @param userId  用户ID
     * @return   返回真有记录  假没记录
     */
    //  boolean addsp(String productId,int quantity,String userId);

    /**
     * 根据购物车如果存在那么再次加入同样商品，则对其进行行更新
     * @param productId   商品ID
     * @param quantity   购物车中商品数量
     * @param userId   用户ID
     * @return  真修改成功，假修改失败
     */
    //   boolean updateCar(String productId,int quantity,String userId);
}
